<?php

/*
创建应用程序
我们要做的第一件事是创建一个新的 Laravel 应用程序实例，它就像 Laravel 所有组件的 “粘合剂”，并且是系统的 IoC 容器，将各个部分绑定在一起。
*/

$app = new Illuminate\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

/*
绑定重要接口
接下来，我们需要将一些重要接口绑定到容器中，以便在需要时能够解析它们。内核负责处理来自 Web 和命令行界面（CLI）的传入请求。
*/

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

/*
返回应用程序
此脚本返回应用程序实例。将该实例提供给调用脚本，这样我们就可以将实例的创建与应用程序的实际运行以及发送响应分离开来。
*/

return $app;
